import { getToken, setToken, removeToken } from '@/utils/auth'
import { login } from '@/api/user'

const state = {
  token: getToken() // 初始化 token 时候，先从缓存中读取
}

const mutations = {

  // 设置 token
  setNeedToken(state, token) {
    state.token = token // 更新，设置 vuex 中的 token 值
    setToken(token) // 同步更新本地存储的 token 值
  },

  // 删除、清空 token
  removeNeedToken(state) {
    state.token = null
    removeToken() // 同步更新缓存的值
  }
}

const actions = {
  async login(context, data) {
    const result = await login(data) // 实际上就是一个promise  result就是执行的结果
    // 表示登录接口调用成功 也就是意味着你的用户名和密码是正确的
    // 现在有用户token
    // actions 修改state 必须通过mutations
    context.commit('setNeedToken', result)
  }
}

export default {
  namespaced: true,
  state,
  mutations,
  actions
}

